#include <boost/shared_ptr.hpp>

namespace util
{
    template<typename Iterator, typename T>
    Iterator binary_search_it(Iterator& begin, Iterator& end, boost::shared_ptr<T> key);

    template<class Iterator, class T>
    void remove(Iterator& begin, Iterator& end, const T& value);

    template<class Iterator, class T>
    void remove_if(Iterator& begin, Iterator& end, bool (*compare)(int));
}
